iT邦幫忙

第 11 屆 iThome 鐵人賽

1

本系列文的環境狀態,可點擊此連結後花園環境參考

在 1 對 1 的 Part 1 中,我們建立了關聯,但要怎麼確定是否有連結呢?
今天就來寫個 controller 測試看看吧!

建立 Controller

在 Terminal 輸入指令

$ php artisan make:controller OneToOneController

路徑:app/Http/Controllers/OneToOneController.php
寫入程式碼

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Flower;


class OneToOneController extends Controller
{
    public function OneToOne (Request $request)
    {
        $flower = Flower::find(3);           
        $flower->profile()->firstOrCreate
        (
            [
                'flower_id'=>$flower->id
            ],
            
            [
                'personality'=>'cute'
            ]
        );

        dd($flower->profile);
    }

}

在文末會有較詳細的程式碼解析

建立 API Route

路徑:BackGarden/routes/api.php

<?php

Route::post('/flower/one','OneToOneController@OneToOne');

用 POSTMAN 測試

在 POSTMAN 設定 POST 並貼入 api 爲 BackGarden.test/api/flower/one

解析

畫面有兩張資料庫的 Table 及 OneToOneController 的內容物,分別是 flowers 跟 profiles ,藉由 flower_id 連結彼此的關係,形成相依性。

程式碼內某些方法在這邊稍作介紹:

  • Flower::find(3)
    find() 方法透過 $primaryKey 屬性查找 model。
    如果沒有設置,會預設是 id。如果您進行了設置。
    PS:可使用此指令進行自定義主鍵名稱 public $primarykey = 'Love_id';

  • firstOrCreate()

    1. 判斷是否存在,如果存在,則維持原始資料不另建新資料。
    2. 不存在則建立新資料
  • dd()
    代表「Dump and Die」,輸出結果並立即停止該過程,藉此生成較結構化,易於閱讀的變量結果。
    可以在瀏覽器中顯示變量,一般是拿來除錯用的。

參考連結:
❁ Laravel 官方-Eloquent: Relationships
❁ Charleen 大 - Laravel新手基礎訓-Eloquent: Relationships-One to One
❁ Basics of Model::find()
❁ firstOrCreate、firstOrNew、updateOrCreate 方法使用
❁ 除錯程式碼之 dd VS var_dump VS print_r ?
❁ A Better dd() for Your TDD


上一篇
✾後花園D37✾-也許忠貞的 1 對 1 關係? Part 1(Eloquent: Relationships )
下一篇
✾後花園D39✾-博愛的 1 對 多 關係? Part 1( One To Many Relationships )
系列文
在後花園遇見LP,Laravel及PHP的甜蜜糾纏,火熱上映49
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言